using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;
using Common; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using SystemFrameworks;

namespace MinCultura.Sipa.EntidadesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_CAMPOS_ACTIVIDAD
	/// </summary>
	public class CamposActividad
	{
		#region Private Data Access Atributes

		private const String CAM_ID_PARAM = "@CAM_ID";
		private const String CAM_NOMBRE_PARAM = "@CAM_NOMBRE";

		#endregion Private Data Access Atributes

		/// <summary>
		/// Constructor de la clase ARTCAMPOSACTIVIDAD
		/// </summary>
        public CamposActividad(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }
        #region ConnectionString

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

        #endregion

		public CamposActividadData BuscarCamposActividad()
		{
			CamposActividadData response = new CamposActividadData();
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_CAMPOS_ACTIVIDAD", response.Tables[0]);
			if (response.Tables[0].Rows.Count == 0)
				return null;
			return response;
		}


		public CamposActividadData ConsultarCamposActividad(decimal parCAM_ID)
		{
			CamposActividadData response = new CamposActividadData();

			SqlParameter param1 = new SqlParameter(CAM_ID_PARAM, parCAM_ID);

			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_CAMPOS_ACTIVIDAD", response.Tables[0], parameters);
			if (response.Tables[0].Rows.Count == 0)
				return null;
			return response;
		}

		public void AdicionarCamposActividadEntidad(CamposActividadData data)
		{
			DataTable dt = data.Tables["ART_CAMPOS_ACTIVIDAD"];
			decimal decCAM_ID = 0;
			try
			{
                //StartTransaction();

				foreach (DataRow dr in dt.Rows)
				{
					SqlParameter par1 = new SqlParameter("@CAM_NOMBRE", dr[CamposActividadData.CAM_NOMBRE_FIELD]);
					SqlParameter par2 = new SqlParameter("@CAM_ID",SqlDbType.Decimal);
					par2.Direction = ParameterDirection.Output;

					SqlParameter[] param = {par1,par2};

					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_CAMPOS", param);

					decCAM_ID = Convert.ToDecimal(par2.Value);
				}

                //if (this.RegistroAuditoria!=null)
                //{
                //    this.RegistroAuditoria.Rows[0][RegistroAuditoriaData.REG_IDENTIFICADOR_FIELD] = decCAM_ID;
                //}

                //RegistrarAuditoria();

                //CompleteTransaction();
			}
			catch (SqlException SqlEx)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(SqlEx, "ART_CAMPOS_ACTIVIDAD"), SqlEx);
			}
			catch (Exception ex)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "ART_CAMPOS_ACTIVIDAD"), ex);
			}
		}

		public void ActualizarCamposActividadEntidad(CamposActividadData data)
		{
			DataTable dt = data.Tables["ART_CAMPOS_ACTIVIDAD"];
			CamposActividadData camposActividadDataAnt = new CamposActividadData();
			try
			{
                //if (this.RegistroAuditoria!=null)
                //{
                //    camposActividadDataAnt = ConsultarCamposActividad(Convert.ToDecimal(dt.Rows[0][CamposActividadData.CAM_ID_FIELD]));
                //}

                //StartTransaction();

				foreach (DataRow dr in dt.Rows)
				{
					SqlParameter par1 = new SqlParameter("@CAM_ID", dr[CamposActividadData.CAM_ID_FIELD]);
					SqlParameter par2 = new SqlParameter("@CAM_NOMBRE", dr[CamposActividadData.CAM_NOMBRE_FIELD]);
					SqlParameter[] param = {par1, par2};
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ACTUALIZAR_CAMPOS", param);
				}

                //RegistrarAuditoria(camposActividadDataAnt.Tables[0],dt);

                //CompleteTransaction();
			}
			catch (SqlException SqlEx)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(SqlEx, "ART_CAMPOS_ACTIVIDAD"), SqlEx);
			}
			catch (Exception ex)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorActualizar", "ART_CAMPOS_ACTIVIDAD"), ex);
			}
		}

		/// <summary>
		/// Elimina un registro de la entidad Artcamposactividad
		/// </summary>
		/// <param name="parCAM_ID">Identificador del registro
		public void EliminarCamposActividad(decimal parCAM_ID)
		{
			try
			{
				SqlParameter param1 = new SqlParameter(CAM_ID_PARAM, parCAM_ID);

				SqlParameter[] parameters = {param1};
				SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_CAMPOS_ACTIVIDAD", parameters);
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_CAMPOS_ACTIVIDAD"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_CAMPOS_ACTIVIDAD"), ex);
			}
		}

		public void EliminarCamposActividad(ArrayList arrIDs)
		{
			try
			{
                //StartTransaction();

				foreach (object Item in arrIDs)
				{
					SqlParameter param1 = new SqlParameter(CAM_ID_PARAM, decimal.Parse(Item.ToString()));
					SqlParameter[] parameters = {param1};
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_CAMPOS_ACTIVIDAD", parameters);
				}

                //RegistrarAuditoria();

                //CompleteTransaction();
			}
			catch (SqlException sqlEx)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "ART_CAMPOS_ACTIVIDAD"), sqlEx);
			}
			catch (Exception ex)
			{
                //AbortTransaction();
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "ART_CAMPOS_ACTIVIDAD"), ex);
			}
		}
	}
}